<?xml version='1.0' encoding='utf-8' ?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
		<title>Methodological Recommendations</title>
		<link type="text/css" rel="stylesheet" href="PLUGINS_ROOT/org.polarsys.capella.doc/html/styles.css"/>
	</head>
	<body>
		<h1 id="Methodological_Recommendations">Methodological Recommendations</h1>
		<h2 id="Data_Model_and_Arcadia_Abstraction_Levels">Data Model and Arcadia Abstraction Levels</h2>
		<p>There are several different ways to organize data modelling in Capella.</p>
		<p>In any case, you have to define precisely what your objectives for data modelling are.</p>
		<p>For instance do you want to describe domain concepts only, or do you want to use the data model for code generation purposes? Also, do you need a complete functional analysis with Component Exchanges and Functional Exchanges, or can you live with just Interfaces on Components without any functions?</p>
		<p>A common practice, but not a mandatory one, is to describe all external data at System Analysis level (starting possibly at Operational Analysis), and to describe further internal data at Logical Architecture and/or Physical Architecture levels.</p>
		<p>With Capella, you are used to transition Actors, Functions, etc. from one Arcadia level to the next one down, and you cannot refer to a System function at Logical Architecture level, for instance. It is not the same with data: from a given level, you can refer to any Class, Basic Type, etc. defined in an upper level.</p>
		<p><center>
			<img border="0" src="Images/image154.jpg"/></center>
		</p>
		<p>The main idea is to facilitate maintenance: if classes and types evolve at a given level, as we only reference them, there is nothing special to do. On the contrary, if we choose to transition manually the data, which is possible in Capella , we will need to update all lower levels as soon as there is a modification at a higher level. So the common recommendation is not to transition data, unless you really need to separate very strongly the different levels of a specific model.</p>
		<h2 id="Data_Normalization">Data Normalization</h2>
		<h3 id="1NF">1NF</h3>
		<p>Attribute types are primitive classes.  Value of each attribute is atomic, there is no embedded class.</p>
		<p><center>
			<img border="0" src="Images/image155.jpg"/></center>
		</p>
		<h3 id="2NF">2NF</h3>
		<p>The model shall be 1NF and every property (attribute or association) that does not belong to the key structure shall be dependent on the complete key: the key is the smallest key for the properties of this class.</p>
		<p><center>
			<img border="0" src="Images/image156.jpg"/></center>
		</p>
		<h3 id="3NF">3NF</h3>
		<p>The model shall be 2NF and there is no transitive dependence: X -&gt; Y -&gt; Z</p>
		<p>A property (attribute or association role) ‘Y’ is functionally dependent on a group of properties ‘X’ = (X1, .., xn) if and only if its value is by nature determined as soon as the value ‘V’ = (V1, .., Vn) from group ‘X’ is known. We note X - &gt;Y.</p>
		<p><center>
			<img border="0" src="Images/image157.png"/></center>
		</p>
		<p>Contrary to preconceived ideas, in most cases, only one 3NF model exists.</p>
		<p>More precisely, the greater the degree of normalization is required, the more the possible interpretations of the model are reduced.</p>
		<h2 id="Validating_the_interface_and_data_model">Validating the interface and data model</h2>
		<p>A large number of rules checked by Capella  apply to the Interface and Data Model. You should rely on them to maintain your model and ensure its consistency and completeness. </p>
		<p>For instance, in the 
			<i>Design </i>– 
			<i>Well-Formedness </i>category, there is a big 
			<i>Data </i>group:
		</p>
		<p><center>
			<img border="0" src="Images/image158.jpg"/></center>
		</p>
		<p>There is also an 
			<i>Interfaces</i> group:
		</p>
		<p><center>
			<img border="0" src="Images/image159.jpg"/></center>
		</p>
		<p>Some rules are nevertheless still missing and get progressively integrated on user suggestion.</p>
		<h2 id="Basic_Best_Practices">Basic Best Practices</h2>
		<p>The model content and diagrams should be homogeneous between model contributors.</p>
		<p>Hence define the rules to be applied by each contributor:</p>
		<ul>
			<li>To make modelling efficient (less rework)</li>
			<li>To make good diagrams (diagram layout conventions)</li>
		</ul>
		<p>Before creating a new Type, check that it does not already exist!</p>
		<p>Take care: model checking can detect duplicates only if they have the same name. And remember also that two elements created in different packages are considered different, even if they have the same name.</p>
		<h3 id="Naming_Conventions">Naming Conventions</h3>
		<p>Capitalize the first letter of class names. </p>
		<p>Begin property names with a lowercase letter. Multi-word names are often formed by concatenating the words and using lowercase for all letters except for upcasing the first letter of each word but the first.</p>
		<p>A possible rule for Primitive Classes and Simple Types is to prefix their name with “T”, in order to easily distinguish them from a standard class.</p>
		<h3 id="Package_Structuration">Package Structuration</h3>
		<p>A package should never contain more than 20 elements. If it the case, break it down into sub-packages.</p>
		<h3 id="Diagram_Layout">Diagram Layout</h3>
		<p>In the CDB, a good practice is to use only rectilinear line styles.</p>
		<p>Put generalized classes above specialized ones.</p>
		<p>Do not clutter your diagrams: not more than 12 classes or types in the same CDB.</p>
		<h3 id="Using_color_codes_on_diagrams">Using color codes on diagrams</h3>
		<p>This guideline applies to any diagram and any type of model. </p>
		<p>In case color codes are really needed to identifies specific concerns visually on a diagram, this should be managed in a formal way : </p>
		<p>• Identifying formally a property or property value which holds the semantic concept under consideration, </p>
		<p>• Developing a viewpoint that will ensure unicity and consistency of this attribute across all model elements, </p>
		<p>• Using this same viewpoint to manage the color that is displayed on a diagram. </p>
		<p>Using viewpoints will prevent from manual maintenance of the color codes which would be likely to generate inconsistencies and errors with critical impacts.</p>
		<h3 id="Document_and_annotate_the_model.21">Document and annotate the model!</h3>
		<p>Do not forget to document extensively your modeling elements and diagrams.</p>
		<p>You can use both rich text and links to diagrams, external files, etc.</p>
		<p>This should be done via the 
			<i>Description</i> tab:
		</p>
		<p><center>
			<img border="0" src="Images/image160.png"/></center>
		</p>
	</body>
</html>